<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			// function idMaker(){
			// 	let index=0
			// 	return {
			// 		next(){
			// 			return {value:index++,done:false}
			// 		}
			// 	}
			// }
			// const it=idMaker()
			// console.log(it.next())//1
			// console.log(it.next())//2
			// console.log(it.next())//3

			// function idMaker(){
			// 	let index=0
			// 	return {
			// 		next(){
			// 			return new Promise((resolve,reject)=>{
			// 				setTimeout(()=>{
			// 					resolve({value:index++,done:false})
			// 				},1000)
			// 			})
			// 		}
			// 	}
			// }
			// const it=idMaker()
			// console.log(it.next())//Promise {<pending>}
			
			
			// 异步遍历器
			// value属性的返回值是一个 Promise 对象，用来放置异步操作。但是这样写很麻烦，不太符合直觉，语义也比较绕。
			// function idMaker(){
			// 	let index=0
			// 	return {
			// 		next(){
			// 			return {
			// 				 value: new Promise(resolve => setTimeout(() => resolve(index++), 1000)),
			// 				 done: false
			// 			}
			// 		}
			// 	}
			// }
			// const it=idMaker()
			// it.next().value.then(data=>{
			// 	console.log(data)
			// })
			// it.next().value.then(data=>{
			// 	console.log(data)
			// })
			// it.next().value.then(data=>{
			// 	console.log(data)
			// })
			
			
			
			// 一个对象的同步遍历器的接口，部署在Symbol.iterator属性上面。
			// 同样地，对象的异步遍历器接口，部署在Symbol.asyncIterator属性上面。
			// 不管是什么样的对象，只要它的Symbol.asyncIterator属性有值，就表示应该对它进行异步遍历。
			// const arr=['a', 'b']
			// const asyncIterable = createAsyncIterable(['a', 'b']);
			// const asyncIterator = asyncIterable[Symbol.asyncIterator]();
			// 
			// asyncIterator
			// .next()
			// .then(iterResult1 => {
			//   console.log(iterResult1); // { value: 'a', done: false }
			//   return asyncIterator.next();
			// })
			// .then(iterResult2 => {
			//   console.log(iterResult2); // { value: 'b', done: false }
			//   return asyncIterator.next();
			// })
			// .then(iterResult3 => {
			//   console.log(iterResult3); // { value: undefined, done: true }
			// });
			// 报错createAsyncIterable is not defined 可能浏览器还不支持
			
		</script>
	</body>
</html>
